package com.example.springevent.demos;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Component;

@Component
public class DemoEventMethodAnnotationListener {

	private static final Logger log = LoggerFactory.getLogger(DemoEventMethodAnnotationListener.class);

	// 推荐的@EventListener方法：
	// 入参只有1个，并且为XxxEvent； 返回值为void； 访问限定符是 public。
	@EventListener
	public void suggestedMethod(DemoEvent event) {
		log.info("开始事件监听DemoAnnotationListener.suggestedMethod, Thread = [{}], 事件内容[{}]",
				Thread.currentThread().getName(), event.toString());
	}

	// 不推荐的@EventListener方法：
	// 入参不是XxxEvent； 
	// 返回值如果不是void，则会继续触发事件
	@EventListener
	public void notRecommendedMethod(String eventData) {
		log.info("开始事件监听DemoAnnotationListener.notRecommendedMethod, Thread = [{}], 事件内容[{}]",
				Thread.currentThread().getName(), eventData.toString());
//		return "notRecommendedMethod";
	}

}
